home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / wgdb-42.lha / wgdb-4.2 / gdb / symfile.h < prev    next >
C/C++ Source or Header  |  1992-09-11  |  5KB  |  161 lines

  1. /* Definitions for reading symbol files into GDB.
  2.    Copyright (C) 1990  Free Software Foundation, Inc.
  3.  
  4. This file is part of GDB.
  5.  
  6. This program is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2 of the License, or
  9. (at your option) any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* This file requires that you first include "bfd.h".  */
  21.  
  22. /* Data structures and function definitions for dealing with
  23.    symbol table reading from files.  */
  24.  
  25. /* Structure to keep track of symbol reading functions for various
  26.    object file types.  */
  27.  
  28. struct sym_fns {
  29.  
  30.   /* sym_name
  31.      is the name, or name prefix, of the BFD "target type" that this
  32.      set of functions handles.  E.g. "a.out" or "sunOs" or "coff".  */
  33.  
  34.   char *sym_name;
  35.  
  36.   /* sym_namelen
  37.      counts how many bytes of sym_name should be checked against the
  38.      BFD target type of the file being read.  If an exact match is
  39.      desired, specify the number of characters in sym_name plus 1 for the
  40.      NUL.  If a prefix match is desired, specify the number of characters in
  41.      sym_name.  */
  42.  
  43.   int sym_namelen;
  44.  
  45.   /* sym_new_init
  46.      initializes anything that is global to the entire
  47.      symbol table.  It is called during symbol_file_add, when
  48.      we begin debugging an entirely new program.  */
  49.  
  50.   void (*sym_new_init) ();
  51.  
  52.   /* sym_init (sf)
  53.      reads any initial information from a symbol file, and
  54.      initializes the struct sym_fns SF in preparation for sym_read().
  55.      It is called every time we read a symbol file for any reason.  */
  56.  
  57.   void (*sym_init) ();
  58.  
  59.   /* sym_read (sf, addr, mainline)
  60.      reads a symbol file into a psymtab (or possibly a symtab).
  61.      SF is the struct sym_fns that sym_init initialized.  ADDR
  62.      is the offset between the file's specified start address and
  63.      its true address in memory.  MAINLINE is 1 if this is the
  64.      main symbol table being read, and 0 if a secondary
  65.      symbol file (e.g. shared library or dynamically loaded file)
  66.      is being read.  */
  67.  
  68.   void (*sym_read) ();
  69.  
  70.   /* sym_bfd
  71.      is the accessor for the symbol file being read.  */
  72.  
  73.   bfd  *sym_bfd;
  74.  
  75.   /* sym_private
  76.      is where information can be shared among sym_init and sym_read.
  77.      It is typically a pointer to malloc'd memory.  */
  78.  
  79.   char *sym_private;            /* Should be void * */
  80.  
  81.   /* next
  82.      finds the next struct sym_fns.  They are allocated and initialized
  83.      in whatever module implements the functions pointed to; an 
  84.      initializer calls add_symtab_fns to add them to the global chain.  */
  85.   struct sym_fns *next;
  86. };
  87.  
  88.             /*   Functions   */
  89.  
  90. extern struct symtab *allocate_symtab ();
  91. extern int  free_named_symtabs ();
  92. extern void fill_in_vptr_fieldno ();
  93. extern void add_symtab_fns ();
  94.  
  95. /* Functions for dealing with the misc "function" vector, really a misc
  96.    address<->symbol mapping vector for things we don't have debug symbols
  97.    for.  */
  98.  
  99. extern void init_misc_bunches ();
  100. extern void prim_record_misc_function ();
  101. extern void discard_misc_bunches ();
  102. extern void condense_misc_bunches ();
  103.  
  104. /* Sorting your symbols for fast lookup or alphabetical printing.  */
  105.  
  106. extern void sort_block_syms ();
  107. extern void sort_symtab_syms ();
  108. extern void sort_all_symtab_syms ();
  109. extern void sort_block_syms ();
  110.  
  111. /* Make a copy of the string at PTR with SIZE characters in the symbol obstack
  112.    (and add a null character at the end in the copy).
  113.    Returns the address of the copy.  */
  114.  
  115. extern char *obsavestring ();
  116.  
  117. /* Concatenate strings S1, S2 and S3; return the new string.
  118.    Space is found in the symbol_obstack.  */
  119.  
  120. extern char *obconcat ();
  121.  
  122.             /*   Variables   */
  123.  
  124. /* File name symbols were loaded from.  */
  125.  
  126. extern char *symfile;
  127.  
  128. /* The modification date of the file when they were loaded.  */
  129.  
  130. extern long /* really time_t */ symfile_mtime;
  131.  
  132. /* Vectors of all partial symbols read in from file.  */
  133.  
  134. extern struct psymbol_allocation_list {
  135.   struct partial_symbol *list, *next;
  136.   int size;
  137. } global_psymbols, static_psymbols;
  138.  
  139. /* Support for complaining about things in the symbol file that aren't
  140.    catastrophic.
  141.  
  142.    Each such thing gets a counter.  The first time we have the problem,
  143.    during a symbol read, we report it.  At the end of symbol reading,
  144.    if verbose, we report how many of each problem we had.  */
  145.  
  146. struct complaint {
  147.   char *message;
  148.   unsigned counter;
  149.   struct complaint *next;
  150. };
  151.  
  152. /* Root of the chain of complaints that have at some point been issued. 
  153.    This is used to reset the counters, and/or report the total counts.  */
  154.  
  155. extern struct complaint complaint_root[1];
  156.  
  157. /* Functions that handle complaints.  (in symfile.c)  */
  158.  
  159. int complain();
  160. void clear_complaints();
  161.